package main

import "fmt"

// 在函数式编程语言中，一个 map-function 是指能够接受一个函数原型和一个列表，并使用列表中的值依次执行函数原型，公式为：map ( F(), (e1,e2, . . . ,en) ) = ( F(e1), F(e2), ... F(en) )。
// 编写一个函数 mapFunc 要求接受以下 2 个参数：
// 一个将整数乘以 10 的函数
// 一个整数列表
// 最后返回保存运行结果的整数列表。

type mappingInt func(int) int

func mapFunc(f mappingInt, s []int) (r []int) {
	l := len(s)
	r = make([]int, l)
	for i := 0; i < l; i++ {
		r[i] = f(s[i])
	}
	return
}

func mulTen(s int) int {
	return s * 10
}

func main() {
	s := []int{1, 3, 6, 2, 4, 6}
	fmt.Println(mapFunc(mulTen, s))
}
